package com.zmq.pic.service.impl;

import java.io.Serializable;
import java.util.List;

import com.zmq.pic.common.HibernateDao;
import com.zmq.pic.common.Page;
import com.zmq.pic.service.ICommonService;

/**
 * @Title: CommonServicesImpl.java
 * @Package com.teda.services.impl
 * @Description: 公共的Services具体实现方法
 * @author 陈希峰 chenxf10@126.com
 * @date 2012-4-8 上午11:47:23
 * @version V1.0
 */
public abstract class CommonServiceImpl<T> implements ICommonService<T> {

	public abstract HibernateDao<T> getHibernateDao();

	/**
	 * 
	 * @Title: save
	 * @author 陈希峰 chenxf10@126.com
	 * @Description: 新增
	 * @param t
	 * @return void
	 * @throws
	 */
	public void save(T entity) {
		getHibernateDao().save(entity);
	}

	public void merge(T entity) {
		getHibernateDao().merge(entity);
	}

	/**
	 * 
	 * @Title: delete
	 * @author 陈希峰 chenxf10@126.com
	 * @Description: 根据主键删除
	 * @param t
	 * @return void
	 * @throws
	 */
	public void delete(T entity) {
		getHibernateDao().delete(entity);
	}

	/**
	 * 
	 * @Title get
	 * @author 陈希峰 chenxf10@126.com
	 * @Description 根据主键获取唯一的实体
	 * @param id
	 * @return
	 * @return T
	 * @throws
	 */
	public T get(Serializable id) {
		return getHibernateDao().get(id);
	}

	/**
	 * 
	 * @Title: update
	 * @author 陈希峰 chenxf10@126.com
	 * @Description: 修改
	 * @param t
	 * @return void
	 * @throws
	 */
	public void update(T entity) {
		getHibernateDao().update(entity);
	}

	/**
	 * @Title queryUniqueById
	 * @author 陈希峰 chenxf10@126.com
	 * @Description 根据entity中的ID查询实体
	 * @param entity
	 * @return
	 * @return T
	 * @throws
	 */
	public T findById(T entity) {
		return getHibernateDao().findById(entity);
	}

	/**
	 * 
	 * @Title queryAll
	 * @author 陈希峰 chenxf10@126.com
	 * @Description 查询所有
	 * @return
	 * @see com.teda.services.ICommonServices#queryAll()
	 */
	public List<T> findAll() {
		return getHibernateDao().findAll();
	}

	/**
	 * @Title loadById
	 * @author 陈希峰 chenxf10@126.com
	 * @Description load方法查找对象
	 * @param entity
	 * @return T
	 * @throws
	 */
	public T loadById(T entity) {
		return getHibernateDao().loadById(entity);
	}

	/**
	 * @Title findByExample
	 * @author 陈希峰 chenxf10@126.com
	 * @Description 根据entity查找跟entity属性相同的实体
	 * @param eitity
	 * @return
	 * @return List<T>
	 * @throws
	 */
	public List<T> findByExample(T entity) {
		return getHibernateDao().findByExample(entity);
	}

	/**
	 * @Title findByExample
	 * @author 陈希峰 chenxf10@126.com
	 * @Description 根据对象分页查询
	 * @param gAdministrator
	 * @param page
	 * @return void
	 * @throws
	 */
	public void findByExample(T entity, Page<T> page) {

	}

	/**
	 * @Title findByUnique
	 * @author 陈希峰 chenxf10@126.com
	 * @Description 按属性查找唯一对象,匹配方式为相等.
	 * @param propertyName
	 * @param value
	 * @return
	 * @return T
	 * @throws
	 */
	public T findByUnique(final String propertyName, final Object value) {
		return getHibernateDao().findByUnique(propertyName, value);
	}
}
